"""Definition of the Tramite content type
"""

from zope.interface import implements, directlyProvides

from Products.Archetypes import atapi
from Products.ATContentTypes.content import base
from Products.ATContentTypes.content import schemata
from Products.Archetypes import utils

from guegue.alcaldias import alcaldiasMessageFactory as _
from guegue.alcaldias.interfaces import ITramite
from guegue.alcaldias.config import PROJECTNAME

TramiteSchema = schemata.ATContentTypeSchema.copy() + atapi.Schema((

    # -*- Your Archetypes field definitions here ... -*-

    atapi.StringField('title',
                searchable=1,
                isMetadata=0,
                accessor='Title',
                widget=atapi.StringWidget(label='Nombres',
                                      maxlength=150,
                                      size=30,
                                      label_msgid="label_entry_title",
                                      description_msgid="help_entry_title",
                                      i18n_domain="guegue.alcaldias",
                                      description='')),
    atapi.StringField('description',
                searchable=1,
                isMetadata=0,
                accessor='Description',
                widget=atapi.TextAreaWidget(label='Breve descripción del Tramite-Servicio',
                                      label_msgid="label_entry_description",
                                      description_msgid="help_entry_description",
                                      i18n_domain="guegue.alcaldias",
                                      description='Entre una breve descripción.')),
    atapi.StringField('tipo',
                searchable=1,
                isMetadata=0,
                vocabulary=['Impuesto','Multa','Contribución','Tasa','Gratuito'],
                widget=atapi.SelectionWidget(label='Tipo de Trámite',
                        	label_msgid='label_entry_tipo',
                	        description_msgid='help_entry_tipo',
	                        i18n_domain='guegue.alcaldias',
        	                description='')),
    atapi.StringField('institucion',
                searchable=1,
                isMetadata=0,
                widget=atapi.StringWidget(label='Institución Responsable',
                                      maxlength=400,
                                      size=60,
                                      label_msgid="label_entry_institucion",
                                      description_msgid="help_entry_institucion",
                                      i18n_domain="guegue.alcaldias",
                                      description='')),
    atapi.StringField('dependencia',
                searchable=1,
                isMetadata=0,
                vocabulary="getDependencias",
                widget=atapi.SelectionWidget(label='Dependencia Responsable',
                                      label_msgid="label_entry_dependencia",
                                      description_msgid="help_entry_dependencia",
                                      i18n_domain="guegue.alcaldias",
                                      description='')),
    atapi.StringField('lugar',
                searchable=0,
                isMetadata=0,
                widget=atapi.StringWidget(label='Lugar donde realizar el Trámite',
                                      label_msgid="label_entry_lugar",
                                      description_msgid="help_entry_lugar",
                                      i18n_domain="guegue.alcaldias",
                                      description='Lugar donde realizar el Trámite')),
    atapi.StringField('costo',
                searchable=1,
                isMetadata=0,
                widget=atapi.StringWidget(label='Costo del Trámite/Servicio (C$)',
                                      maxlength=400,
                                      size=30,
                                      label_msgid="label_entry_costo",
                                      description_msgid="help_entry_costo",
                                      i18n_domain="guegue.alcaldias",
                                      description='')),
    atapi.StringField('pagar',
                searchable=0,
                isMetadata=0,
                widget=atapi.StringWidget(label='Dónde Pagar',
                                      label_msgid="label_entry_pagar",
                                      description_msgid="help_entry_pagar",
                                      i18n_domain="guegue.alcaldias",
                                      description='')),
    atapi.StringField('direccion',
                searchable=1,
                isMetadata=0,
                widget=atapi.StringWidget(label='Dirección Física',
                                      maxlength=700,
                                      size=80,
                                      label_msgid="label_entry_direccion",
                                      description_msgid="help_entry_direccion",
                                      i18n_domain="guegue.alcaldias",
                                      description='')),
    atapi.StringField('telefono',
                searchable=0,
                isMetadata=0,
                widget=atapi.StringWidget(label='Teléfono',
                                      label_msgid="label_entry_telefono",
                                      description_msgid="help_entry_telefono",
                                      i18n_domain="guegue.alcaldias",
                                      description='')),
    atapi.StringField('fax',
                searchable=0,
                isMetadata=0,
                widget=atapi.StringWidget(label='Fax',
                                      label_msgid="label_entry_fax",
                                      description_msgid="help_entry_fax",
                                      i18n_domain="guegue.alcaldias",
                                      description='')),
    atapi.TextField('body',
              searchable=1,
              required=0,
              primary=1,
              default_content_type='text/html',
              default_output_type='text/html',
              allowable_content_types=('text/plain','text/structured', 'text/html', 'text/restructured'),
              widget=atapi.RichWidget(label='Requisitos',
                                label_msgid="label_entry_body",
                                description_msgid="help_entry_body",
                                i18n_domain="guegue.alcaldias",
                                description="Requisitos para realizar trámites")),
    atapi.TextField('aspectos',
              searchable=1,
              required=0,
              default_content_type='text/html',
              default_output_type='text/html',
              allowable_content_types=('text/plain','text/structured', 'text/html', 'text/restructured'),
              widget=atapi.RichWidget(label='Aspectos a tomar en cuenta',
                                label_msgid="label_entry_aspectos",
                                description_msgid="help_entry_aspectos",
                                i18n_domain="guegue.alcaldias",
                                description="Aspectos a tomar en cuenta")),
    atapi.TextField('pasos',
              searchable=1,
              required=0,
              default_content_type='text/html',
              default_output_type='text/html',
              allowable_content_types=('text/plain','text/structured', 'text/html', 'text/restructured'),
              widget=atapi.RichWidget(label='Pasos y/o procedimientos para la realización del Trámite / servicio',
                                label_msgid="label_entry_pasos",
                                description_msgid="help_entry_pasos",
                                i18n_domain="guegue.alcaldias",
                                description="Pasos y/o procedimientos para la realización del Trámite / servicio")),
))

# Set storage on fields copied from ATContentTypeSchema, making sure
# they work well with the python bridge properties.

#TramiteSchema['title'].storage = atapi.AnnotationStorage()
#TramiteSchema['description'].storage = atapi.AnnotationStorage()

schemata.finalizeATCTSchema(TramiteSchema, moveDiscussion=False)

class Tramite(base.ATCTContent):
    """Tramites de los municipios"""
    implements(ITramite)

    def getDependencias(self):
        dl = utils.DisplayList()
        linklist = self.portal_catalog.searchResults(portal_type='Dependencia')
        for link in linklist:
            dl.add(link['id'], link['Title'])
        return dl

    portal_type = "Tramite"
    schema = TramiteSchema

   # title = atapi.ATFieldProperty('title')
   # description = atapi.ATFieldProperty('description')

atapi.registerType(Tramite, PROJECTNAME)
